﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Data.SqlClient;
using System.Data;
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;
using System.Windows.Forms;

namespace ConnectSQLServer.Common
{
    class SqlAccessHelper
    {
        static public string AlterTable(System.Windows.Forms.DataGridViewRow row,int rowindex, InfoDatabase info)
        {
            try
            {
                Server s = info.SERVER;
                Column newCol = new Column();
                newCol.Parent = info.SERVER.Databases.ItemById(info.DatabaseID).Tables.ItemById(info.TableID);
                newCol.Name = row.Cells[0].Value.ToString();
                string type = row.Cells[1].Value.ToString();
                newCol.DataType = DataTypeSQL.GetDataType(type);
                newCol.Nullable = Convert.ToBoolean(row.Cells[2].Value);
                int count = s.Databases.ItemById(info.DatabaseID).Tables.ItemById(info.TableID).Columns.Count;
                if (rowindex >= s.Databases.ItemById(info.DatabaseID).Tables.ItemById(info.TableID).Columns.Count)
                {
                    s.Databases.ItemById(info.DatabaseID).Tables.ItemById(info.TableID).Columns.Add(newCol);
                }
                else
                {
                    Column col = s.Databases.ItemById(info.DatabaseID).Tables.ItemById(info.TableID).Columns[rowindex];
                    col.Drop();
                    s.Databases.ItemById(info.DatabaseID).Tables.ItemById(info.TableID).Columns.Add(newCol,rowindex);
                }   

                s.Databases.ItemById(info.DatabaseID).Tables.ItemById(info.TableID).Alter();
                GlobalVariable.TManager.Saved();
                return string.Empty;
            }
            catch(Exception ex)
            {
                return ex.Message;
            }
        }
        static public string DeleteColumn(System.Windows.Forms.DataGridViewRow row, int rowindex, InfoDatabase info)
        {
            try
            {
                Server s = info.SERVER;
                if (rowindex >= s.Databases.ItemById(info.DatabaseID).Tables.ItemById(info.TableID).Columns.Count)
                {
                }
                else
                {
                    Column col = s.Databases.ItemById(info.DatabaseID).Tables.ItemById(info.TableID).Columns[rowindex];
                    col.Drop();
                    col.Alter();
                }

                s.Databases.ItemById(info.DatabaseID).Tables.ItemById(info.TableID).Alter();
                GlobalVariable.TManager.Saved();
                return string.Empty;
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }
    }
}
